package repository

import (
	"errors"
	"fmt"
	"gitee.com/ling1314/origin-utility/db"
	"gitee.com/ling1314/origin-utility/model"
	"gorm.io/gorm"
)

type clusterRepository struct{}

func (r clusterRepository) Insert(m *model.Cluster) error {
	return db.GetDB().Create(m).Error
}

func (r clusterRepository) FindById(id int64) (m model.Cluster, err error) {
	if err = db.GetDB().First(&m, id).Error; errors.Is(err, gorm.ErrRecordNotFound) {
		err = errors.New("cluster not exist")
	}
	return
}

func (r clusterRepository) FindAllWithCreatorId(id int64) (li []model.Cluster, err error) {
	err = db.GetDB().Model(&model.Cluster{}).Where("creator_id = ? ", id).Find(&li).Error
	return
}

func (r clusterRepository) FindAll() (li []model.Cluster, err error) {
	err = db.GetDB().Model(&model.Cluster{}).Find(&li).Error
	return
}

func (r clusterRepository) DeleteById(id int64) (err error) {
	return db.GetDB().Delete(&model.Cluster{}, id).Error
}

func (r clusterRepository) Update(m *model.Cluster) error {
	if _, err := r.FindById(m.ClusterId); err != nil {
		return fmt.Errorf("cluster not exist")
	}
	return db.GetDB().Save(m).Error
}
